package org.example.partner.service.impl;

import java.util.List;

import cn.hutool.json.JSONUtil;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.ShiroUtils;
import org.example.contract.domain.Contract;
import org.example.contract.mapper.ContractMapper;
import org.example.partner.domain.Partner;
import org.example.partner.mapper.PartnerMapper;
import org.example.warehouse.domain.MallStoreDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.example.partner.mapper.TenementInfoMapper;
import org.example.partner.domain.TenementInfo;
import org.example.partner.service.ITenementInfoService;
import com.ruoyi.common.core.text.Convert;

/**
 * 租户信息Service业务层处理
 *
 * @author ruoyi
 * @date 2024-05-11
 */
@Service
public class TenementInfoServiceImpl implements ITenementInfoService
{
    @Autowired
    private TenementInfoMapper tenementInfoMapper;

    @Autowired
    private ContractMapper contractMapper;


    /**
     * 查询租户信息
     *
     * @param id 租户信息主键
     * @return 租户信息
     */
    @Override
    public TenementInfo selectTenementInfoById(Long id)
    {
        return tenementInfoMapper.selectTenementInfoById(id);
    }

    /**
     * 查询租户信息列表
     *
     * @param tenementInfo 租户信息
     * @return 租户信息
     */
    @Override
    @DataScope(deptAlias = "d")
    public List<TenementInfo> selectTenementInfoList(TenementInfo tenementInfo)
    {
      return tenementInfoMapper.selectTenementInfoList(tenementInfo);
    }
    @Override
    public List<TenementInfo> choosePartnerList(TenementInfo tenementInfo){
        tenementInfo.setDeptId(ShiroUtils.getSysUser().getDeptId());
       return tenementInfoMapper.choosePartnerList(tenementInfo);
    }


    /**
     * 新增租户信息
     *
     * @param tenementInfo 租户信息
     * @return 结果
     */
    @Override
    public int insertTenementInfo(TenementInfo tenementInfo)
    {
        int count=0;
        if(tenementInfo.getParams().containsKey("list")){
            String  list =   tenementInfo.getParams().get("list").toString();
            List<TenementInfo> listParams = JSONUtil.parseArray(list).toList(TenementInfo.class);
            Long deptId =ShiroUtils.getSysUser().getDeptId();
            for (TenementInfo info:listParams){
                info.setPartnerId(info.getDeptId());
                info.setDeptId(deptId);
                tenementInfoMapper.insertTenementInfo(info);
            }
            count=listParams.size();
        }else {
            count=tenementInfoMapper.insertTenementInfo(tenementInfo);
        }
        return count;
    }

    /**
     * 修改租户信息
     *
     * @param tenementInfo 租户信息
     * @return 结果
     */
    @Override
    public int updateTenementInfo(TenementInfo tenementInfo)
    {
        return tenementInfoMapper.updateTenementInfo(tenementInfo);
    }

    /**
     * 批量删除租户信息
     *
     * @param ids 需要删除的租户信息主键
     * @return 结果
     */
    @Override
    public int deleteTenementInfoByIds(String ids)
    {
        return tenementInfoMapper.deleteTenementInfoByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除租户信息信息
     *
     * @param id 租户信息主键
     * @return 结果
     */
    @Override
    public int deleteTenementInfoById(Long id)
    {
        TenementInfo tenementInfo = tenementInfoMapper.selectTenementInfoById(id);
        Contract contract = new Contract();
        contract.setBuyDeptId(tenementInfo.getPartnerId());
        contract.setOwnerDeptId(tenementInfo.getPartnerId());
        List<Contract> contracts = contractMapper.selectPartnerContractList(contract);
        if(contracts.size()>0){
            throw new ServiceException("已经存在合同关系，不能删除");
        }
        return tenementInfoMapper.deleteTenementInfoById(id);
    }
}
